package com.tth.learn.addproperties.java1;

import org.junit.Test;

import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * @Author tth
 * @Date 2023/1/3 10:11
 */
public class LambdaTest {
    @Test
    public void test1() {
        // 不使用lambda表达式
        Consumer<String> con1 = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        con1.accept("辞暮尔尔，烟火年年");

        System.out.println("****************************************");

        // 使用lambda表达式：一个参数，可以省略形参的()；抽象方法中只有一句代码，可以省略方法体的{}
        Consumer<String> con2 = s -> System.out.println(s);
        con2.accept("辞暮尔尔，烟火年年");
    }

    @Test
    public void test2() {
        // 不使用lambda表达式
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
        System.out.println(com1.compare(12, 13));

        System.out.println("****************************************");

        // 使用lambda表达式：两个参数，形参列表的()不可省；抽象方法中只有一句代码，可以省略{}和return
        Comparator<Integer> com2 = (o1, o2) ->  Integer.compare(o1, o2);
        System.out.println(com2.compare(2, 1));

    }
}
